1. The Field of the Invention
The present invention relates to synchronizing data. Specifically, the present invention relates to methods, systems, and computer program products for synchronizing data stored at one or more message clients with data stored at a message server, where the clients may receive update notifications and may represent the data using different data structures than the message server uses to represent the same data.
2. Background and Relevant Art
There are a variety of circumstances where it is desirable to maintain the same data in different locations. Synchronizing data is the process of reflecting in one copy of the data, changes that are made in another. Depending on the needs of a particular application, synchronization may be almost instantaneous or may be relatively sporadic. During the time that elapses between data synchronizations, a copy of data that has not been updated is termed “stale.”
One increasingly popular application for maintaining two copies of the same data is the use of personal digital assistants (“PDAs”). PDAs store various types of information, including task, calendar, contact, email, music, map, financial, and sports data. In short, PDAs may store virtually any type of electronic information. The compact size of PDAs allows a user the convenience of having access to a large amount of information without the bulk of a portable computer or paper organizer. In many cases, a host computer provides centralized data storage for a PDA, with the PDA and host computer each storing separate copies of the data.
Note that in this description and in the claims, a second device containing a “copy” of the data on a first device means that the second device represents the current state of the data insofar as the second device is capable of representing, or chooses to represent, the data stored on the first device, given the hardware and software capabilities of the second device. For example, data formats, representations, and supported fields may vary from one device to another due to corresponding differences in application software, operating systems, available memory, processor type, etc. One reason that such differences exist, and are likely to continue, is a lack of standardization. Nevertheless, for purposes of this description, the second device has a “copy” of the data on the first device if the second device represents the current state of the data insofar as the second device is either capable or chooses, considering the hardware and software differences that may exist between the devices.
The host's centralized storage offers a number of benefits. For example, it allows several users to share task, calendar, and contact data and the host may act as a primary location for receiving email. However, the PDA and host do not maintain an open channel of communication in typical operation. As a result, the data stored at either the host or PDA becomes stale because changes made in one device cannot be reflected in the other. Therefore, the host and PDA data must be updated periodically to insure that each device contains current information.
There are two basic types of data updates: demand synchronization and update notification. A demand synchronization is an explicit request to synchronize data. Generally, a demand synchronization is characterized by two-way communication between the synchronizing devices. During a demand synchronization, the devices exchange any modified data. The synchronization is complete once the devices confirm to each other that they have received all modifications and contain the same data insofar as the devices are capable of representing, or choose to represent, the data.
In contrast, update notifications are one-way communications that simply inform another device of data changes as they occur. Because they involve one-way communications, update notifications may be carried out over an unreliable communication channel, whereas demand synchronizations commonly are performed over a reliable communication channel. (In general, an unreliable communication channel does not include a destination acknowledging the receipt of data, whereas a reliable channel includes an acknowledgement.)
Demand synchronization usually includes the following operations. Both the host and the PDA track changes in their data that have occurred since the previous synchronization. Then, at the time of synchronization, only the tracked changes are exchanged between the host and PDA. If the same data has been changed in both devices, the synchronization recognizes a potential conflict and prompts the user to determine which change should be retained. In the absence of a conflict, changes are applied automatically, without prompting the user. Any changes made during the demand synchronization process are tracked as synchronization changes so that these changes will not be exchanged during a subsequent demand synchronization. Otherwise, a PDA receiving a changed phone number from a host would reflect the changed phone number back to the host during the next synchronization, even though the PDA made no change to the phone number, other than to make it consistent with the phone number stored at the host.
Resolving conflicts without user intervention requires relatively sophisticated processing and as a rule the user is prompted for all but the most trivial cases. One reason why it may be difficult to resolve conflicts automatically is that, as mentioned above, a PDA may represent, format, or store information differently from how the corresponding information is stored at the host. As a result, even data that is the “same” may contain different information.
One area of recent advancement in PDA technology involves more frequently updating a PDA through update notification in order to reduce data staleness. Previously, PDAs had included only cable or infrared links for communicating with a host, requiring the two devices to be in relatively close proximity for even demand synchronization. Terrestrial airwave receivers have been added to some newer PDA models in order to increase the range at which they can receive new or changed data from a host. The increased range allows for both update notification and demand synchronization to occur while a PDA is located a substantial distance from a host.
Transmitting over substantial distances introduces some uncertainty as to whether or not a PDA will receive an update notification. For example, the PDA may travel beyond the transmission area and thus never receive the update notification. Since the communication links for update notification may be unreliable (in contrast to the reliable links commonly used in demand synchronization), the host remains ignorant of the unsuccessful receipt of the update notification. Thus, the host does not know to take any corrective action such as resending the update notification.
After processing an update notification, it may seem as if both devices have independently made a change since the same change may appear different depending on how the devices store the data. Thus, during a subsequent demand synchronization, the apparent conflict is likely to require user intervention to resolve. A user must compare the PDA and host data and confirm that they in fact represent the same data. Alternatively, demand synchronization may not be able to determine whether or not a particular change was received and, as a result, send a duplicate of an earlier change. For example, a new contact may be added once by an update notification and a second time by a demand synchronization. Resolving duplicate changes also requires user intervention. However, requiring user intervention substantially erodes the benefits offered by update notification. It can be frustrating and inordinately time-consuming for a user to make even a few comparisons or reconcile a few duplicate records.
As illustrated by the preceding examples, a need exists for synchronizing efficiently when update notifications may be received and when synchronizing between devices that represent the same data using different data structures. Therefore, methods, systems, and computer program products are desired that allow for the benefits of update notifications and account for differences is how information is stored, without imposing substantial burdens on the user.